# -*- coding: utf-8 -*-
"""
Created on Sun Aug 20 21:35:14 2023

@author: skunk69
"""

import json

chinese_name = u'多维完美主义问卷'
english_name = 'Multidimensional Perfectionism Scale'
abbreviation = 'MPS'
category = u'人生价值、态度量表'

outline = u"""通常，完美主义被描述成一种人格特征、特质或一种认知行为倾向。但到目前为止完美主义还没有一个公认的定义，研究者们从不同的角度给完美主义下了不同的定义。Hewitt从人际角度把完美主义划分为自我取向、他人取向和社会取向3种类型，其特点是人们为自已或他人设置不切合实际的“高标准”，或接受别人为自己设立的类似标准。另一方面，Hamachek则提出正常完美主义和神经质完美主义的观点，前者是一种积极的人格特征，而后者则可能引起人们产生不适应的行为。在编制《多维完美主义问卷》时的操作性定义是：完美主义是以“高标准”为核心内容，并且在情绪、认知行为方面表现出适应或不适应的心理特征。
《多维度完美主义问卷》（Multidimensional Perfectionism Scale, MPS）由王君、戴晓阳于2008年编制完成，该量表由完美主义高标准、完美主义适应性2个分量表组成，高标准分量表包含自我完美主义、他人完美主义和社会完美主义3个维度，适应性分量表包括情绪和认知行为2个维度。正式量表包含29个题目，采用五级评分方法。"""

instruction = u"""这是一份测量完美主义的问卷，请逐条仔细阅读，并在问题后选择最符合你的观点的等级。回答没有正确和错误之分，因此尽量不要选择“无看法”，也不要花过多的时间思考。"""

with open('MPS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = []
scales = [u'自我完美主义',u'他人完美主义',u'社会完美主义',u'情绪',u'认知行为']
scales_items = [
    [2,4,14,15,26],# 自我完美主义
    [10,11,12,19,24],# 他人完美主义
    [1,6,21,25,29],# 社会完美主义
    [3,5,7,9,13,17,22,23,28],# 情绪
    [8,16,18,20,27],# 认知行为
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,30)}
print(f'complementary set= {check_set}')

factors = [u'完美主义高标准',u'完美主义适应性']
factors_scales = [scales[0:3],scales[3::]]
rating = [u'很不同意',u'基本不同意',u'无看法',u'基本同意',u'很同意']
score_rules = list(range(1,6))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《多维完美主义问卷》为一个自评量表。"""

reliability = u"""普通人群样本来自大学生群体，临床样本来自精神科或临床心理科的病人组，病人组包括了抑郁症、强迫症和社交恐惧症。所有项目与总分都达到了显著的中等相关，说明问卷具有良好的项目区分度。在信度方面，高标准和适应性分量表的α系数分别为0.74和0.78。间隔一周的重测信度分别为0.89和0.84。"""
validity = u"""在效度方面，因素分析结果证明量表的结构符合理论设想。效标效度检验发现，适应性分量表总分与SDS和SCL-90强迫、焦虑和抑郁因子的相关为0.28~0.60，社会完美主义维度与上述效标的相关为0.32~0.43。普通人群与抑郁症、强迫症和社交恐怖病人比较显示除他人完美主义维度外，其他4个测量维度和2个分量表得分均存在统计学显著差异，说明多维完美主义问卷具有良好的实证效度。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""（1）完美主义高标准分量表
自我完美主义维度，高分者常常为自己设置超高的行为标准，并对自己进行苛刻的评价。
他人完美主义维度，高分者常为他人设置不切实际的标准。
社会完美主义维度，高分者接受别人为自己设置的不实际的标准，并作为评价自己行为的准则。
以上三个维度总分是否达到50作为判断被试者是否具有完美主义心理特征的划界分，得分越高者越追求完美主义。
（2）完美主义适应性分量表
情绪维度，该维度得高分反映了被试者在追求高标准过程中以及面对失败时常常体验到各种负性情绪的程度。
认知行为维度，该维度得高分反映了个体在追求高标准以及面对挫折时所出现的不合理的认知行为程度。
以上两个维度总分是否达到46作为区分适应和不适应完美主义的划界分，分数越高则说明被试者越不适应。
（3）完美主义心理特征的分类
量表编制者提出以“高标准”为X轴，以“适应性”为Y轴，交叉点是2个分量表的划界分（50，46），可对被试者的完美主义心理特征进一步分类。
根据被试得分将完美主义分为完美主义适应型（高标准分大于等于50，适应分小于46）、完美主义不适应型（高标准分大于等于50，适应分大于等于46）、顺其自然适应型（高标准分小于50，适应分小于46）和顺其自然不适应型（高标准分小于50，适应分大于等于46）4种类型。"""

applications = u"""划界分和分型为将来的研究和临床实践提供了可操作的分类标准。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)